package com.glsc.ngateway.amdoc.services;

import com.github.pagehelper.PageInfo;
import com.glsc.ngateway.amdoc.pojo.*;
import com.glsc.ngateway.common.api.amdoc.dto.AssetProductRequestComprehensiveDto;
import com.glsc.ngateway.common.api.amdoc.dto.AssetProductRequestNodeListViewDto;
import com.glsc.ngateway.common.api.amdoc.dto.AssetProductWorkFlowListViewDto;
import com.glsc.ngateway.common.api.amdoc.dto.InvestmentManagerDto;

import java.util.List;

public interface IAssetProductService {

    /**
     * 获取资管产品列表：V_AM_PRODUCT_LIST
     * productSysId    product                     productCode     productNature   creator     creationDate    initialName                 isFiled
     * CPXX_ID         CPMC                        CPBM            CPXZ            CJR         CJRQ            CSMC           PageInfo    SFGD
     * <p>
     * 在mapper基础上提供分页功能，pageNum：0，1都是第一页
     */
    public PageInfo<AssetProduct> getAssetProductList(Integer pageNum, Integer pageSize, String productCode, String product, String productNature, Integer productSysId);


    /**
     * 查询资管产品项目成员信息数据：V_AM_PRODUCT_STAFF
     * productSysId    product                     productCode     memberId    roleId  isIn
     * CPXX_ID         CPMC                        CPBM            RY          XMJS    ZT
     * 1000021	        国联玉如意111号集合资产管理计划	B42020	        2594	    0	    0
     */
    public PageInfo<AssetProductMember> getAssetProductStaffListBySysId(Integer pageNum, Integer pageSize, Integer productSysId);

    /**
     * 查询资管产品相关流程：V_AM_PRODUCT_WORKFLOW_REL
     * <p>
     * productSysId product                     productCode     requestId   requestName
     * CPXX_ID      CPMC                        CPBM            Requestid   Requestname     workflowid  currentnodeid   currentnodetype     creater                             deleted     status  requestLevel    requestmark
     * 1000021	    国联玉如意111号集合资产管理计划	B42020	        463515	    资管档案测试流程	70603	    85437	        1	                dingyue	丁玥	2020-11-12	15:33:04	0	        结束	    0	            zgywtjhbjlc20201100002
     */
    public PageInfo<AssetProductWorkFlow> getAssetProductWorkFlowListBySysId(Integer pageNum, Integer pageSize, Integer productSysId, List<Integer> flowList, String requestName);


    /**
     * 查询资管档案目录:V_AM_PRODUCT_DOC_DIRECTORY
     */
    public PageInfo<AssetProductDocDirectory> getAssetProductDocDirectoryListBySysId(Integer pageNum, Integer pageSize, Integer productSysId);


    /**
     * 查询资管目录模板清单,对应试图为,V_AM_PRODUCT_DIR_TEMPLATE
     */
    public PageInfo<AssetProductDirTemp> getAssetProductDirTemplate(Integer pageNum, Integer pageSize, String productNature);


    /**
     * 查询资管档案列表:V_AM_PRODUCT_DOC_LIST
     */
    public PageInfo<AssetProductDoc> getAssetProductDocListBySysId(Integer pageNum, Integer pageSize, Integer productSysId, Integer directory, String document);


    /**
     * V_AM_REQUEST_LIST
     *
     * @param currentNodeIdList 当前流程节点类型列表
     */
    public PageInfo<AssetFlow> getOaWorkflowRequestPage(Integer pageNum, Integer pageSize, List<Integer> flowList, String requestName, List<String> currentNodeIdList);

    /**
     * V_AM_REQUEST_LIST
     *
     * @param requestId OA流程实例ID
     */
    public AssetFlow getOaWorkflowInfoByRequestId(Integer requestId);

        /**
         * V_AM_SALE_AGENCY
         */
    public PageInfo<AssetProductSaleAgency> getAssetProductSaleAgencyList(Integer pageNum, Integer pageSize);

    /**
     * V_AM_PROD_DEFAULT_MEMBER
     */
    public PageInfo<AssetProductDefaultMember> getAssetProductDefaultMemberList(Integer pageNum, Integer pageSize);

    public String createProduct(String productInfo);

    public String updateProduct(String productInfo);

    public String batupload(String productInfo);

    List<InvestmentManagerDto> getInvestmentManagerInfo(List<Integer> idList);

    PageInfo<AssetProductWorkFlowListView> getAssetProductWorkFlowListView(Integer pageNum, Integer pageSize, AssetProductWorkFlowListViewDto assetProductWorkFlowListViewDto);

    PageInfo<AssetProductRequestNodeListView> getAssetProductRequestNodeListView(Integer pageNum, Integer pageSize, AssetProductRequestNodeListViewDto assetProductRequestNodeListViewDto);

    PageInfo<AssetProductDocComprehensive> getAssetProductDocListComprehensive(AssetProductRequestComprehensiveDto requestDto);
}